home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
cdplay
/
src
/
cdda.h
< prev
next >
Wrap
Text File
|
1991-10-18
|
9KB
|
228 lines
/* << High C V1.4 >> **********************************************************
**
** CD演奏ライブラリ用ヘッダ
**
** 1991.02.09 : CREATE
** 1991.02.12 : FINISH
**
** < HISTORY >
** 1991.02.09 : CREATE
** 1991.02.19 : SHUFFLE機能の追加.
** 1991.02.27 : 全面改訂開始....
**
** < note > : TABS = 4
**
** All Rights Reserved, Copyright (C) Y.Hirata 1991.
**
** Programmed by Y.Hirata ( Nifty ID : NAB03321 )
**
******************************************************************************/
#undef EX
#ifdef _CDDA_LIB /* ライブラリソース用 */
#define EX
char CDDA_DEBUG = 0 ; /* ● DEBUG 用 ● */
#else /* ライブラリ使用側 */
#define EX extern
EX char CDDA_DEBUG ; /* ● DEBUG 用 ● */
#endif
#define CDDA_MAX_TRACK 99 /* CD-ROM 最大トラック数:99 */
#define CDDA_MIN_TRACK 1 /* CD-ROM 最小トラック数:1 */
#define CDDA_ZERO 0
#define CDDA_TRUE 1 /* 真値 */
#define CDDA_FALSE 0 /* 偽値 */
#define CDDA_ERROR -1 /* エラー時のリターン値 */
#define CDDA_NOERROR CDDA_ZERO /* 正常終了時のリターン値 */
#define CDDA_RETRY 5 /* エラー発生時のリトライ回数 */
#define CDDA_MAX_REPEAT 255 /* 最大演奏リピート回数 */
#define CDDA_MIN_REPEAT 1 /* 最小演奏リピート回数 */
#define CDDA_FFREV_SEC 1 /* 先送り/後戻り時カウント値[秒] */
/*
** 乱数のマクロを使用する側で、stdio.h, stdlib.h, time.h を include して下さい!
*/
#define CDDA_RANDINIT srand((unsigned int)clock()) /* 乱数初期化 */
#define CDDA_RANDOM(x) (rand()%(x)) /* 乱数 : 0~x */
/* CDタイプ値の定義 */
#define CDDA_TYPE_NO 0 /* なし */
#define CDDA_TYPE_CDDA 1 /* CD-DA */
#define CDDA_TYPE_DATA 2 /* DATA */
#define CDDA_TYPE_BOTH 3 /* CD-DA & DATA */
/* スイッチ値の定義 */
#define CDDA_SW_EXIT -1 /* 演奏終了 */
#define CDDA_SW_EJECT -1 /* 演奏終了 */
#define CDDA_SW_STOP 0 /* 演奏停止 */
#define CDDA_SW_PAUSE 0x100 /* 演奏一時停止 */
#define CDDA_SW_TOCREAD 0x101 /* TOC 読出し */
#define CDDA_SW_PLAY 0x102 /* 演奏開始 */
#define CDDA_SW_SHUFFLE 0x104 /* シャッフル演奏 */
#define CDDA_SW_INIT 0x108 /* 初期処理 */
#define CDDA_SW_STATUS 0x110 /* CD演奏状態取得 */
#define CDDA_SW_PROGRAM 0x200 /* プログラム演奏 */
#define CDDA_SW_CONTINUE 0x201 /* 連続再生 */
#define CDDA_SW_SINGLE 0x202 /* 一曲演奏 */
#define CDDA_SW_REPEAT 0x204 /* リピート設定 */
#define CDDA_SW_BREAK 0x400 /* スイッチを放す */
#define CDDA_SW_FFMUSIC 0x401 /* 曲先送り(スイッチを放すまで) */
#define CDDA_SW_REWMUSIC 0x402 /* 曲後戻り(スイッチを放すまで) */
#define CDDA_SW_FFTIME 0x404 /* 時間先送り(スイッチを放すまで) */
#define CDDA_SW_REWTIME 0x408 /* 時間後戻り(スイッチを放すまで) */
#define CDDA_SW_PRG_CHECK 0x800 /* プログラム演奏曲の確認 */
#define CDDA_SW_PRG_CLEAR 0x801 /* プログラム演奏曲の削除 */
#define CDDA_SW_PRG_TOP 0x802 /* プログラム演奏曲の位置ポインタクリア */
/* ステータス値の定義 */
#define CDDA_STAT_NOTREADY -1 /* NOT READY */
#define CDDA_STAT_STOP 0 /* 停止中 */
#define CDDA_STAT_PLAY 1 /* 演奏中 */
#define CDDA_STAT_PAUSE 2 /* 一時停止中 */
/* エラー値の定義 */
#define CDDA_ERR_NOERROR CDDA_ZERO /* 正常 */
#define CDDA_ERR_NOTREADY 0x001 /* CDがセットされていない */
#define CDDA_ERR_PARAMETER 0x002 /* パラメタエラー */
#define CDDA_ERR_NOTCONNECT 0x004 /* ドライブが非接続 */
#define CDDA_ERR_ABNORMAL 0x008 /* コマンドが異常終了 */
#define CDDA_ERR_MEDIA 0x010 /* メディアエラー */
#define CDDA_ERR_HARD 0x020 /* ハードエラー */
#define CDDA_ERR_PARITY 0x040 /* パリティエラー */
#define CDDA_ERR_CHANGE 0x080 /* メディア交換あり */
#define CDDA_ERR_DEVICENO 0x100 /* 指定デバイス番号誤り */
#define CDDA_ERR_SECTOR 0x101 /* セクタ長が違う */
#define CDDA_ERR_NOWPLAY 0x102 /* 音楽演奏中 */
#define CDDA_ERR_NOWPAUSE 0x104 /* 音楽が一時停止中 */
#define CDDA_ERR_NOTPAUSE 0x108 /* 一時停止状態でない */
#define CDDA_ERR_NOMUSIC 0x110 /* 音楽データがない */
#define CDDA_ERR_REPEAT 0x120 /* リピート演奏を開始した */
/*---------------------------------------------------------------------------*/
/*
** データ構造定義
*/
/*---------------------------------------------------------------------------*/
typedef struct { /* CD-ROM 曲情報用 */
char min ; /* 分 ( 1min = 60sec ) */
char sec ; /* 秒 ( 1sec = 75frame ) */
char frame ; /* フレーム */
} CDDA_TRACK ;
typedef struct { /* CD-ROM 情報 */
int drv ; /* CDドライブ番号(0~6) */
int type ; /* CDタイプ */
int start ; /* 先頭トラック(曲)番号 */
int end ; /* 最終トラック(曲)番号 */
CDDA_TRACK track[CDDA_MAX_TRACK] ; /* 各トラックの演奏開始時間 */
CDDA_TRACK discend ; /* ディスク内演奏終了時間 */
} CDDA_INFO ;
/*---------------------------------------------------------------------------*/
/*
** グローバルデータ
*/
/*---------------------------------------------------------------------------*/
EX CDDA_INFO CDDA_INFO_buf ; /* CD情報格納用 */
EX CDDA_TRACK CDDA_CLOCK_nowdisc ; /* 演奏中のディスク内演奏時間 */
EX CDDA_TRACK CDDA_TIME_nowdisc ; /* 演奏中のディスク内残り演奏時間 */
EX CDDA_TRACK CDDA_CLOCK_nowtrack ; /* 演奏中のトラック内演奏時間 */
EX CDDA_TRACK CDDA_TIME_nowtrack ; /* 演奏中のトラック内残り演奏時間 */
EX CDDA_TRACK CDDA_CLOCK_program ; /* プログラム用チェックポイントの合計時間 */
EX CDDA_TRACK CDDA_TIME_track[CDDA_MAX_TRACK] ; /* 各トラックの演奏時間 */
EX CDDA_TRACK CDDA_TIME_music ; /* 全トラックの演奏時間 */
EX CDDA_TRACK CDDA_TIME_data ; /* 全データ時間 */
EX CDDA_TRACK CDDA_TIME_program ; /* 全プログラム時間 */
EX CDDA_TRACK CDDA_TIME_program2 ; /* プログラム未選択時間 */
EX CDDA_TRACK CDDA_CLOCK_start ; /* 演奏開始指定時間 */
EX CDDA_TRACK CDDA_CLOCK_end ; /* 演奏終了指定時間 */
EX CDDA_TRACK CDDA_CLOCK_pause ; /* 一時停止時の時間 */
EX int CDDA_NOW_status ; /* 現在のCD演奏状態 */
EX int CDDA_NOW_musicno ; /* 現在演奏中の曲番号 */
EX int CDDA_NOW_start ; /* 演奏開始曲番号 */
EX int CDDA_NOW_end ; /* 演奏終了曲番号 */
EX int CDDA_NOW_pause ; /* 一時停止時の曲番号 */
EX int CDDA_TOTAL_program ; /* プログラム登録曲数 */
EX int CDDA_COUNT_program ; /* プログラム確認時何曲目 */
EX int CDDA_REMAIN_program ; /* プログラム残り演奏曲数 */
/*---------------------------------------------------------------------------*/
/*
** 関数プロトタイプ宣言
*/
/*---------------------------------------------------------------------------*/
/*
** CDDA.C
*/
void CDDA_music_clear( void ) ;
void CDDA_libinit( void ) ;
int CDDA_cdinfo( void ) ;
int CDDA_tocread( void ) ;
int CDDA_seek( void ) ;
int CDDA_mtrplay( void ) ;
void CDDA_stop( void ) ;
int CDDA_mphase( void ) ;
int CDDA_shuffle_check( void ) ;
void CDDA_program_playend( void ) ;
int CDDA_program_check( void ) ;
int CDDA_continue_check( int ) ;
int CDDA_single_check( int ) ;
int CDDA_play_check( void ) ;
void CDDA_nplay_check( void ) ;
int CDDA_get_status( void ) ;
int CDDA_status( void ) ;
int CDDA_timeplay( void ) ;
int CDDA_play( void ) ;
int CDDA_pause( void ) ;
void CDDA_shuffle_init( void ) ;
int CDDA_shuffle( int * ) ;
int CDDA_program_data_check( void ) ;
int CDDA_program_data_clear( void ) ;
int CDDA_program_data_add( int ) ;
int CDDA_swinit( void ) ;
void CDDA_select_stop( int ) ;
int CDDA_select_music( int ) ;
void CDDA_select_mode( int ) ;
int CDDA_select_play( void ) ;
int CDDA_select_shuffle( void ) ;
int CDDA_select_program( int ) ;
void CDDA_initstatus( void ) ;
int CDDA_switch( int ) ;
int CDDA_get_playmode( void ) ;
void CDDA_debug_dispmsg( int ) ;
/*
** CDTIME.C
*/
int CDDA_cmptime( signed char,signed char,signed char,signed char,signed char,signed char ) ;
void CDDA_subtime( char,char,char,char,char,char,char *,char *,char * ) ;
void CDDA_addtime( char,char,char,char,char,char,char *,char *,char * ) ;
void CDDA_set_time_start( int ) ;
void CDDA_set_time_end( int ) ;
void CDDA_timecalc( void ) ;
void CDDA_remaintime( void ) ;
void CDDA_program_remaintime( void ) ;
int CDDA_data_check( int ) ;
int CDDA_next_music( void ) ;
int CDDA_before_music( void ) ;
int CDDA_fftime( void ) ;
int CDDA_rewtime( void ) ;
int CDDA_ffmusic( void ) ;
int CDDA_rewmusic( void ) ;
#undef EX